package library;

import java.util.HashMap;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
public class DatabaseHandler extends SQLiteOpenHelper {
 
    private static final int DATABASE_VERSION = 1;
 
    private static final String DATABASE_NAME = "hometrade";
 
    private static final String TABLE_LOGIN = "login";
 
    private static final String KEY_ID = "id";
    private static final String KEY_NOMBRE = "nombre";
    private static final String KEY_NOMBRE_USUARIO = "nombreUsuario";
    private static final String KEY_TELEFONO= "telefono";
    private static final String KEY_EMAIL = "email";
    private static final String KEY_COD_USUARIO= "codUsuario";
    private static final String KEY_FECHA_REGISTRO = "fechaRegistro";
 
    public DatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
 
    // Creacion de tablas locales
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_LOGIN_TABLE = "CREATE TABLE " + TABLE_LOGIN + "("
                + KEY_ID + " INTEGER PRIMARY KEY,"
                + KEY_NOMBRE + " TEXT,"
                + KEY_NOMBRE_USUARIO + " TEXT,"
                + KEY_TELEFONO + " TEXT,"
                + KEY_EMAIL + " TEXT UNIQUE,"
                + KEY_COD_USUARIO + " TEXT UNIQUE,"
                + KEY_FECHA_REGISTRO + " TEXT)";
        db.execSQL(CREATE_LOGIN_TABLE);
    }
 
    // Actualizacion de Base de Datos
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_LOGIN);
 
        // Create tables again
        onCreate(db);
    }
 
    /**
     * guardando datos de usuario en bd
     * */
    public void addUser(String nombre, String nombre_usuario, String telefono, String email, String cod_usuario, String fecha_registro) {
        SQLiteDatabase db = this.getWritableDatabase();
 
        ContentValues values = new ContentValues();
        values.put(KEY_NOMBRE, nombre); // Nombre
        values.put(KEY_NOMBRE_USUARIO, nombre_usuario); // Nick
        values.put(KEY_TELEFONO, telefono); // Telefono
        values.put(KEY_EMAIL, email); // Email
        values.put(KEY_COD_USUARIO, cod_usuario); // Codigo unico de usuario
        values.put(KEY_FECHA_REGISTRO, fecha_registro); // Fecha de registro
 
        //  insertandso fila
        db.insert(TABLE_LOGIN, null, values);
        db.close(); // Closing database connection
    }
 
    /**
     * Obtener informacion de usuario de la base de datos
     * */
    public HashMap<String, String> getUserDetails(){
        HashMap<String,String> user = new HashMap<String,String>();
        String selectQuery = "SELECT  * FROM " + TABLE_LOGIN;
 
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        // Move to first row
        cursor.moveToFirst();
        if(cursor.getCount() > 0){
            user.put("nombre", cursor.getString(1));
            user.put("nombre_usuario", cursor.getString(2));
            user.put("telefono", cursor.getString(3));
            user.put("email", cursor.getString(4));
            user.put("cod_usuario", cursor.getString(5));
            user.put("fecha_registro", cursor.getString(6));
        }
        cursor.close();
        db.close();
        // return user
        return user;
    }
 
    /**
     * Obtener el estatus de login del usuario
     * Regresa true si existen filas en la tabla
     * */
    public int getRowCount() {
        String countQuery = "SELECT  * FROM " + TABLE_LOGIN;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        int rowCount = cursor.getCount();
        db.close();
        cursor.close();
 
        // return row count
        return rowCount;
    }
 
    /**
     * volver a crear DB
     * Borra todas las tablas y las vuelve a crear
     * */
    public void resetTables(){
        SQLiteDatabase db = this.getWritableDatabase();
        // borrar todo
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_LOGIN);
        onCreate(db);
        db.close();
    }
 
}